package com.hsylient.javase.chapter02.practice.demo01;

/**
 * 分析
 *
 * 首先java的源码需要先经过编译变成字节码
 * 在运行这一段代码的时候，首先会初始化静态的东西，比如d1和d2
 * 这里有一个误区，我以前以为是先执行静态代码块的，但是我发现了 当静态变量和静态代码块都存在的情况下是按照从上往下的顺序执行的
 */
public class Demo {

    static Demo d1 = new Demo();
    static Demo d2 = new Demo();

    // 构造代码块
    {
        System.out.println("Constructor block run... 1");
    }

    // 静态代码快
    static {
        System.out.println("static block run... 2");
    }

    // 构造方法
    public Demo() {
        System.out.println("Constructor method run... 3");
    }

    public static void main(String[] args) {
        Demo d = new Demo();
    }

}
